/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package graficos;

import E_explicito_Dinamica.EncadeamentoED;
import E_explicito_EstaticoDCWC.EncadeamentoEE_DCWC;
import E_explicito_EstaticoEICH.EncadeamentoEE_EICH;
import E_explicito_EstaticoEISCH.EncadeamentoEE_EISCH;
import E_explicito_EstaticoLICH.EncadeamentoEE_LICH;
import E_explicito_EstaticoLISCH.EncadeamentoEE_LISCH;
import E_implicito_Arvore_Binaria.EncadeamentoIAB;
import E_implicito_Brent.EncadeamentoIB;
import E_implicito_LinearQuotient.EncadeamentoILQ;
import E_implicito_Sequencial.EncadeamentoIS;
import arquivos.geradorRandomico;
import java.util.ArrayList;
import org.jfree.data.category.DefaultCategoryDataset;

/**
 *
 * @author Ariel
 */
public class DataSet {

public static DefaultCategoryDataset createDataSet(){

// create the dataset...
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    EncadeamentoED dinamico;
    EncadeamentoEE_DCWC DCWC;
    EncadeamentoEE_EICH EICH;
    EncadeamentoEE_EISCH EISCH;
    EncadeamentoEE_LICH LICH;
    EncadeamentoEE_LISCH LISCH;
    EncadeamentoIAB binaria;
    EncadeamentoIB brent;
    EncadeamentoILQ linearQuotient;
    EncadeamentoIS sequencial;

    double acessosDinamico;
    double acessosDCWC;
    // double acessosEICH;
    double acessosEISCH;
    // int acessosLICH;
    double acessosLISCH;
    double acessosBinaria;
    double acessosBrent;
    double acessosLq;
    double acessosSeq;

    ArrayList<Integer> chaves = new ArrayList<Integer>();

    for (double i= 50; i < 1009; i = i + 50 ){

        acessosDinamico = 0;
        acessosDCWC = 0;
   //   acessosEICH = 0;
        acessosEISCH = 0;
    //  acessosLICH = 0;
        acessosLISCH = 0;
        acessosBinaria = 0;
        acessosBrent = 0;
        acessosLq = 0;
        acessosSeq = 0;



        for (int j = 1; j <= 100; j ++ ){

            chaves = geradorRandomico.geradorNumerosAleatorios(100000,(int)i);
            
            dinamico = new EncadeamentoED(1009,chaves);
            DCWC = new EncadeamentoEE_DCWC(1009,chaves);
    //      EICH = new EncadeamentoEE_EICH(1009,chaves);
            EISCH = new EncadeamentoEE_EISCH(1009,chaves);
    //      LICH  = new EncadeamentoEE_LICH(1009,chaves);
            LISCH = new EncadeamentoEE_LISCH(1009,chaves);
            binaria = new EncadeamentoIAB(1009,chaves);
            brent   = new EncadeamentoIB(1009,chaves);
            linearQuotient  = new EncadeamentoILQ(1009,chaves);
            sequencial  = new EncadeamentoIS(1009,chaves);

            acessosDinamico += dinamico.getAcessos();
            acessosDCWC += DCWC.getAcessos();
        //   acessosEICH += EICH.getAcessos();
            acessosEISCH += EISCH.getAcessos();
        //  acessosLICH = LICH.getAcessos();
            acessosLISCH += LISCH.getAcessos();
            acessosBinaria += binaria.getAcessos();
            acessosBrent += brent.getAcessos();
            acessosLq += linearQuotient.getAcessos();
            acessosSeq += sequencial.getAcessos();

    }

        acessosDinamico = acessosDinamico/100;
        acessosDCWC = acessosDCWC/100;
   //   acessosEICH = acessosEich/100;
        acessosEISCH = acessosEISCH/100;
    //  acessosLICH = acessosLICH/100;
        acessosLISCH = acessosLISCH/100;
        acessosBinaria = acessosBinaria/100;
        acessosBrent = acessosBrent/100;
        acessosLq = acessosLq/100;
        acessosSeq = acessosSeq/100;

        System.out.println("Carregando... " + i/10 + "%");

        double aux = (double)Math.round((i/1009)*100)/100;
        String carga = Double.toString(aux);
        
        dataset.addValue(acessosDinamico, "Explicito_Dinamica", carga);
        dataset.addValue(acessosDCWC, "Explicito_EstaticoDCWC", carga);
    //  dataset.addValue(acessosEICH, "Explicito_EstaticoEICH", carga);
        dataset.addValue(acessosEISCH, "Explicito_EstaticoEISCH", carga);
    //  dataset.addValue(acessosLICH, "Explicito_EstaticoLICH", carga);
        dataset.addValue(acessosLISCH, "Explicito_EstaticoLISCH", carga);
        dataset.addValue(acessosBinaria, "Implicito_Arvore_Binaria", carga);
        dataset.addValue(acessosBrent, "Implicito_Brent", carga);
        dataset.addValue(acessosLq, "Implicito_LinearQuotient", carga);
        dataset.addValue(acessosSeq, "Implicito_Sequencial", carga);

}
        return dataset;
}

}
